package com.hxh.essaysharing.mapper;

import com.hxh.essaysharing.entity.Articleinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/7/22 17:52
 */
@Mapper
public interface ArticleMapper {

    // 根据 uid 获取该作者文章数量
    int getArtCountByUid(@Param("uid") Integer uid);

    // 根据 uid 获取该作者的草稿数量
    int getDraftCountByUid(@Param("uid") Integer uid);

    // 根据 uid 获取该作者的文章列表, 如果有 key, 则根据 key 检索标题
    // state为1, 则检索文章, 为0则检索草稿
    List<Articleinfo> getMyList(@Param("uid") Integer uid,
                                @Param("state") Integer state,
                                @Param("key") String key);

    // 根据文章 id 删除文章, 同时需要对文章作者进行鉴权
    int del(@Param("id") Integer id, @Param("uid") Integer uid);

    // 根据文章 id 获取文章对象
    Articleinfo getDetail(@Param("id") Integer id);

    // 根据文章 id 进行阅读量 + 1操作
    int updateRCount(@Param("id") Integer id);

    // 添加文章与保存草稿箱(state为0)
    int add(Articleinfo articleinfo);

    // 修改文章
    int update(Articleinfo articleinfo);

    // 查询某 uid 用户发布文章的总阅读量
    Integer getAllReadCountByUid(@Param("uid") Integer uid);

    // 分页查询文章信息
    // pSize: 每页显示的条数  offSize: 偏移量
    // 动态 SQL, key, 根据 key 检索博客标题
    List<Articleinfo> getListByPage(@Param("pSize") Integer pSize,
                                    @Param("offSize") Integer offSize,
                                    @Param("key") String key);

    // 获取所有用户的文章总数
    int getTotalArticleCount(@Param("key") String key);
}
